/**
 *	\file AKPlayer.h
 *  
 *  \section desc_sec Description
 *  Description
 *  
 *  \if copyright
 *  	Copyright 2008 Ben Chen. All rights reserved.
 *  \endif
 *  
 *  \section hist_sec Change History:
 *  	-	1/13/08		BC		Created this file
 *  
 *  <hr>
 *  \addtogroup AnimalKingdom
 *  @{
 */

#import "AKPlugIn.h"

@protocol AKPlayer <AKPlugIn>

@property (readonly)	AKSideIndex	side;
@property (readonly)	AKMove		bestMove;

- (id)initWithSide:(AKSideIndex)anIndex 
	  numOfPlayers:(unsigned)playersCount;
- (void)backToInitialState;
- (void)thinkNextMove;
- (BOOL)performMove:(AKMove)newMove;

// \p anArray is an array of NSValues, each of which wraps a AKPiece. All of them must be valid AKPiece (e.g. not AKZeroPiece).
- (void)setStateWithStateSaver:(NSArray*)anArray;

@optional

- (BOOL)canUndoLastMove;
- (BOOL)undoLastMove;

@end

/** @} */